<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="keywords" content="Hexo Theme Redefine">
    
    <meta name="author" content="xiaoeryu">
    <!-- preconnect -->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

    
    <!--- Seo Part-->
    
    <link rel="canonical" href="https://zaynliu.atomgit.net/hexo/"/>
    <meta name="robots" content="index,follow">
    <meta name="googlebot" content="index,follow">
    <meta name="revisit-after" content="1 days">
    
    
    
        
        <meta property="og:type" content="website">
<meta property="og:title" content="xiaoeryu">
<meta property="og:url" content="https://zaynliu.atomgit.net/hexo/index.html">
<meta property="og:site_name" content="xiaoeryu">
<meta property="og:locale" content="zh_CN">
<meta property="article:author" content="xiaoeryu">
<meta name="twitter:card" content="summary">
    
    
    <!--- Icon Part-->
    <link rel="icon" type="image/png" href="/images/rabete.jpg" sizes="192x192">
    <link rel="apple-touch-icon" sizes="180x180" href="/images/rabete.jpg">
    <meta name="theme-color" content="#A31F34">
    <link rel="shortcut icon" href="/images/rabete.jpg">
    <!--- Page Info-->
    
    <title>
        
            xiaoeryu - Redefine Your Hexo Journey.
        
    </title>

    
<link rel="stylesheet" href="/fonts/Chillax/chillax.css">


    <!--- Inject Part-->
    

    
<link rel="stylesheet" href="/css/style.css">


    
        
<link rel="stylesheet" href="/css/build/tailwind.css">

    

    
<link rel="stylesheet" href="/fonts/GeistMono/geist-mono.css">

    
<link rel="stylesheet" href="/fonts/Geist/geist.css">

    <!--- Font Part-->
    
    
    
    
    
    

    <script id="hexo-configurations">
    window.config = {"hostname":"xiaoeeyu.github.io","root":"/","language":"zh-CN","path":"search.xml"};
    window.theme = {"articles":{"style":{"font_size":"16px","line_height":1.5,"image_border_radius":"14px","image_alignment":"center","image_caption":false,"link_icon":true,"delete_mask":false,"title_alignment":"left","headings_top_spacing":{"h1":"3.2rem","h2":"2.4rem","h3":"1.9rem","h4":"1.6rem","h5":"1.4rem","h6":"1.3rem"}},"word_count":{"enable":true,"count":true,"min2read":true},"author_label":{"enable":true,"auto":false,"list":[]},"code_block":{"copy":true,"style":"mac","highlight_theme":{"light":"github","dark":"vs2015"},"font":{"enable":false,"family":null,"url":null}},"toc":{"enable":true,"max_depth":4,"number":false,"expand":true,"init_open":true},"copyright":{"enable":true,"default":"cc_by_nc_sa"},"lazyload":true,"pangu_js":false,"recommendation":{"enable":false,"title":"推荐阅读","limit":3,"mobile_limit":2,"placeholder":"/images/ball-0101.jpg","skip_dirs":[]}},"colors":{"primary":"#A31F34","secondary":null,"default_mode":"light"},"global":{"fonts":{"chinese":{"enable":false,"family":null,"url":null},"english":{"enable":false,"family":null,"url":null},"title":{"enable":false,"family":null,"url":null}},"content_max_width":"1000px","sidebar_width":"210px","hover":{"shadow":true,"scale":false},"scroll_progress":{"bar":false,"percentage":true},"website_counter":{"url":"https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js","enable":true,"site_pv":true,"site_uv":true,"post_pv":true},"single_page":true,"preloader":{"enable":false,"custom_message":null},"open_graph":true,"google_analytics":{"enable":false,"id":null}},"home_banner":{"enable":true,"style":"fixed","image":{"light":"/images/wallhaven-jxl31y.png","dark":"/images/wallhaven-o5762l.png"},"title":"XIAOERYU","subtitle":{"text":["明心见性，拨云见日","Don't wait, to create"],"hitokoto":{"enable":false,"show_author":false,"api":"https://v1.hitokoto.cn"},"typing_speed":100,"backing_speed":80,"starting_delay":500,"backing_delay":1500,"loop":true,"smart_backspace":true},"text_color":{"light":"#fff","dark":"#d1d1b6"},"text_style":{"title_size":"2.8rem","subtitle_size":"1.5rem","line_height":1.2},"custom_font":{"enable":false,"family":null,"url":null},"social_links":{"enable":true,"style":"default","links":{"github":"https://github.com/xiaoeeyu","instagram":null,"zhihu":null,"twitter":null,"email":"xiaoeryu@163.com"},"qrs":{"weixin":null}}},"plugins":{"feed":{"enable":false},"aplayer":{"enable":false,"type":"fixed","audios":[{"name":null,"artist":null,"url":null,"cover":null,"lrc":null}]},"mermaid":{"enable":false,"version":"9.3.0"}},"version":"2.8.2","navbar":{"auto_hide":false,"color":{"left":"#f78736","right":"#367df7","transparency":35},"width":{"home":"1200px","pages":"1000px"},"links":{"Home":{"path":"/","icon":"fa-regular fa-house"},"Archives":{"path":"/archives","icon":"fa-regular fa-archive"}},"search":{"enable":true,"preload":true}},"page_templates":{"friends_column":2,"tags_style":"blur"},"home":{"sidebar":{"enable":true,"position":"left","first_item":"menu","announcement":null,"show_on_mobile":true,"links":null},"article_date_format":"auto","excerpt_length":200,"categories":{"enable":true,"limit":3},"tags":{"enable":true,"limit":3}},"footerStart":"2022/8/17 11:45:14"};
    window.lang_ago = {"second":"%s 秒前","minute":"%s 分钟前","hour":"%s 小时前","day":"%s 天前","week":"%s 周前","month":"%s 个月前","year":"%s 年前"};
    window.data = {"masonry":false};
  </script>
    
    <!--- Fontawesome Part-->
    
<link rel="stylesheet" href="/fontawesome/fontawesome.min.css">

    
<link rel="stylesheet" href="/fontawesome/brands.min.css">

    
<link rel="stylesheet" href="/fontawesome/solid.min.css">

    
<link rel="stylesheet" href="/fontawesome/regular.min.css">

    
    
    
    
<meta name="generator" content="Hexo 6.3.0">
<style>.github-emoji { position: relative; display: inline-block; width: 1.2em; min-height: 1.2em; overflow: hidden; vertical-align: top; color: transparent; }  .github-emoji > span { position: relative; z-index: 10; }  .github-emoji img, .github-emoji .fancybox { margin: 0 !important; padding: 0 !important; border: none !important; outline: none !important; text-decoration: none !important; user-select: none !important; cursor: auto !important; }  .github-emoji img { height: 1.2em !important; width: 1.2em !important; position: absolute !important; left: 50% !important; top: 50% !important; transform: translate(-50%, -50%) !important; user-select: none !important; cursor: auto !important; } .github-emoji-fallback { color: inherit; } .github-emoji-fallback img { opacity: 0 !important; }</style>
</head>



<body>
	<div class="progress-bar-container">
	

	
	<span class="pjax-progress-bar"></span>
	<!--        <span class="swup-progress-icon">-->
	<!--            <i class="fa-solid fa-circle-notch fa-spin"></i>-->
	<!--        </span>-->
	
</div>

<main class="page-container" id="swup">

	
	
    <style>
        .home-banner-container {
            background: none !important;
        }
        .home-article-item,
        .sidebar-links,
        .sidebar-content,
        a.page-number,
        a.extend,
        .sidebar-links .links:hover,
        .right-bottom-tools,
        footer.footer {
            background-color: var(--background-color-transparent-80) !important;
        }
        .right-bottom-tools:hover,
        a.page-number:hover,
        a.extend:hover {
            background-color: var(--primary-color) !important;
        }
        .site-info,
        .home-article-sticky-label {
            background-color: var(--background-color-transparent-15) !important;
        }
        .home-article-sticky-label {
            backdrop-filter: none !important;
        }
    </style>
    <div class="home-banner-background transition-fade fixed top-0 left-0 w-screen h-screen scale-125 sm:scale-110 box-border will-change-transform bg-cover">
        <img src="/images/wallhaven-jxl31y.png" alt="home-banner-background" class="w-full h-full object-cover dark:hidden">
        <img src="/images/wallhaven-o5762l.png" alt="home-banner-background" class="w-full h-full object-cover hidden dark:block">
    </div>


<div class="home-banner-container flex justify-center items-center transition-fade relative">
    
    <div class="content mt-8 flex flex-col justify-center items-center transition-fade-down">
        <div class="description flex flex-col justify-center items-center w-screen font-medium text-center"
        
        >
            XIAOERYU
            
            
                <p><i id="subtitle"></i></p>
            
        </div>
        
            
            <div class="absolute bottom-0.5 flex flex-row justify-between max-w-[1340px] items-center w-full px-8 sm:px-12">
                <div class="flex p-3 bg-gray-300/50 dark:bg-gray-500/40 backdrop-blur-lg border border-white/20 dark:border-gray-500/30 group rounded-full cursor-pointer flex justify-center items-center aspect-square h-full shadow-redefine-flat hover:shadow-redefine-flat-hover transition-shadow" onclick="scrollToMain()" >
                    <i class="fa-solid fa-arrow-down fa-fw fa-lg group-hover:translate-y-1 transition-transform"></i>
                </div>
                <div class="social-contacts px-6 py-3 bg-gray-300/50 dark:bg-gray-500/40 backdrop-blur-lg border border-white/20 dark:border-gray-500/30 shadow-redefine-flat rounded-full flex flex-row gap-3 items-center">
                    
                        
                            
                                <span class="social-contact-item github">
                                    <a target="_blank" href="https://github.com/xiaoeeyu">
                                        <i class="fa-brands fa-fw fa-lg fa-github"></i>
                                    </a>
                                </span>
                            
                        
                    
                        
                    
                        
                    
                        
                    
                        
                            
                                <span class="social-contact-item email ">
                                    <a href="mailto:xiaoeryu@163.com">
                                        <i class="fa-solid fa-fw fa-at fa-lg"></i>
                                    </a>
                                </span>
                            
                        
                    
                    
                </div>
            </div>
        
    </div>
    <script>
        const scrollToMain = ()=> {
            console.log('scroll');
            const target = document.querySelector('.main-content-container');
            target.scrollIntoView({ behavior: 'smooth'});
        }
    </script>
</div>
	

	<div class="main-content-container flex flex-col justify-between min-h-dvh">
		<div class="main-content-header">
			<header class="navbar-container px-6 md:px-12">
    <div class="navbar-content transition-navbar has-home-banner">
        <div class="left">
            
                <a class="logo-image h-8 w-8 sm:w-10 sm:h-10 mr-3" href="/">
                    <img src="/images/rabete.jpg" class="w-full h-full rounded-sm">
                </a>
            
            <a class="logo-title" href="/">
                <h1>
                xiaoeryu
                </h1>
            </a>
        </div>

        <div class="right">
            <!-- PC -->
            <div class="desktop">
                <ul class="navbar-list">
                    
                        
                            

                            <li class="navbar-item">
                                <!-- Menu -->
                                <a class="active"
                                   href="/"
                                        >
                                    <i class="fa-regular fa-house fa-fw"></i>
                                    首页
                                    
                                </a>

                                <!-- Submenu -->
                                
                            </li>
                    
                        
                            

                            <li class="navbar-item">
                                <!-- Menu -->
                                <a class=""
                                   href="/archives"
                                        >
                                    <i class="fa-regular fa-archive fa-fw"></i>
                                    归档
                                    
                                </a>

                                <!-- Submenu -->
                                
                            </li>
                    
                    
                        <li class="navbar-item search search-popup-trigger">
                            <i class="fa-solid fa-magnifying-glass"></i>
                        </li>
                    
                </ul>
            </div>
            <!-- Mobile -->
            <div class="mobile">
                
                    <div class="icon-item search search-popup-trigger"><i class="fa-solid fa-magnifying-glass"></i>
                    </div>
                
                <div class="icon-item navbar-bar">
                    <div class="navbar-bar-middle"></div>
                </div>
            </div>
        </div>
    </div>

    <!-- Mobile sheet -->
    <div class="navbar-drawer h-dvh w-full absolute top-0 left-0 bg-background-color flex flex-col justify-between">
        <ul class="drawer-navbar-list flex flex-col px-4 justify-center items-start">
            
                
                    

                    <li class="drawer-navbar-item text-base my-1.5 flex flex-col w-full">
                        
                        <a class="py-1.5 px-2 flex flex-row items-center justify-between gap-1 hover:!text-primary active:!text-primary text-2xl font-semibold group border-b border-border-color hover:border-primary w-full active"
                           href="/"
                        >
                            <span>
                                首页
                            </span>
                            
                                <i class="fa-regular fa-house fa-sm fa-fw"></i>
                            
                        </a>
                        

                        
                    </li>
            
                
                    

                    <li class="drawer-navbar-item text-base my-1.5 flex flex-col w-full">
                        
                        <a class="py-1.5 px-2 flex flex-row items-center justify-between gap-1 hover:!text-primary active:!text-primary text-2xl font-semibold group border-b border-border-color hover:border-primary w-full "
                           href="/archives"
                        >
                            <span>
                                归档
                            </span>
                            
                                <i class="fa-regular fa-archive fa-sm fa-fw"></i>
                            
                        </a>
                        

                        
                    </li>
            

            
            
        </ul>

        <div class="statistics flex justify-around my-2.5">
    <a class="item tag-count-item flex flex-col justify-center items-center w-20" href="/tags">
        <div class="number text-2xl sm:text-xl text-second-text-color font-semibold">92</div>
        <div class="label text-third-text-color text-sm">标签</div>
    </a>
    <a class="item tag-count-item flex flex-col justify-center items-center w-20" href="/categories">
        <div class="number text-2xl sm:text-xl text-second-text-color font-semibold">14</div>
        <div class="label text-third-text-color text-sm">分类</div>
    </a>
    <a class="item tag-count-item flex flex-col justify-center items-center w-20" href="/archives">
        <div class="number text-2xl sm:text-xl text-second-text-color font-semibold">112</div>
        <div class="label text-third-text-color text-sm">文章</div>
    </a>
</div>
    </div>

    <div class="window-mask"></div>

</header>


		</div>

		<div class="main-content-body transition-fade-up">
			
			<div class="home-sidebar-container">
    <div class="sticky-container sticky">
        
        
            
            <div class="sidebar-content" >
                <div class="avatar flex justify-center">
    <img src="/images/rabete.jpg">
</div>
                <div class="author flex flex-col justify-center my-2.5 mx-0">
    <div class="name">xiaoeryu</div>
    
        <div class="label">Lv5</div>
    
</div>
                <div class="statistics flex justify-around my-2.5">
    <a class="item tag-count-item flex flex-col justify-center items-center w-20" href="/tags">
        <div class="number text-2xl sm:text-xl text-second-text-color font-semibold">92</div>
        <div class="label text-third-text-color text-sm">标签</div>
    </a>
    <a class="item tag-count-item flex flex-col justify-center items-center w-20" href="/categories">
        <div class="number text-2xl sm:text-xl text-second-text-color font-semibold">14</div>
        <div class="label text-third-text-color text-sm">分类</div>
    </a>
    <a class="item tag-count-item flex flex-col justify-center items-center w-20" href="/archives">
        <div class="number text-2xl sm:text-xl text-second-text-color font-semibold">112</div>
        <div class="label text-third-text-color text-sm">文章</div>
    </a>
</div>
            </div>
        

    </div>
</div>

			

			<div class="main-content">
				<div class="home-content-container">
    <ul class="home-article-list">
        
            <li class="home-article-item">

                

                

                
                <div class="flex flex-col gap-5 px-7 pb-7 pt-7">
                    <h3 class="home-article-title">
                        <a href="/2025/04/05/%E6%9F%90%E9%BA%A6APP%E8%B4%AD%E7%A5%A8%E6%8E%A5%E5%8F%A3%E5%88%86%E6%9E%90/">
                            某麦APP购票接口分析
                        </a>
                    </h3>

                    <div class="home-article-content markdown-body">
                        
                            <p>Here’s something encrypted, password is required to continue reading.</p>

                        
                    </div>

                    <div class="home-article-meta-info-container">
    <div class="home-article-meta-info">
        <span><i class="fa-solid fa-calendars"></i>&nbsp;
            <span class="home-article-date" data-date="Sat Apr 05 2025 16:07:32 GMT+0800">
                
                    2025-04-05
                
            </span>
        </span>
        
            <span class="home-article-category">
                <i class="fa-solid fa-folders"></i>&nbsp;
            <ul>
                
                
                    
                        
                        <li>
                            <a href="/categories/Android%E9%80%86%E5%90%91/">Android逆向</a>&nbsp;
                        </li>
                    
                    
                
            </ul>
        </span>
        
        
            <span class="home-article-tag">
                <i class="fa-solid fa-tags"></i>&nbsp;
                <ul>
                    
                        <li>
                            
                            <a href="/tags/%E5%8D%8F%E8%AE%AE%E5%88%86%E6%9E%90/">协议分析</a>&nbsp;
                        </li>
                    
                        <li>
                            | 
                            <a href="/tags/App%E9%80%86%E5%90%91/">App逆向</a>&nbsp;
                        </li>
                    
                </ul>
            </span>
        
    </div>

    <a href="/2025/04/05/%E6%9F%90%E9%BA%A6APP%E8%B4%AD%E7%A5%A8%E6%8E%A5%E5%8F%A3%E5%88%86%E6%9E%90/">阅读全文<span class="seo-reader-text">某麦APP购票接口分析</span>&nbsp;<i class="fa-solid fa-angle-right"></i></a>
</div>

                </div>
            </li>
        
            <li class="home-article-item">

                

                

                
                <div class="flex flex-col gap-5 px-7 pb-7 pt-7">
                    <h3 class="home-article-title">
                        <a href="/2024/09/16/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F-%E6%9F%90%E6%9F%90%E7%89%9B%E4%BB%94%E5%9F%8E/">
                            微信小程序-某某牛仔城
                        </a>
                    </h3>

                    <div class="home-article-content markdown-body">
                        
                            
                            本文中所有内容仅供研究与学习使用，禁止用于任何商业用途和非法用途，否则后果自负！！！
本章来分析一个微信小程序的协议，这个小程序的协议本身比较简单。主要是来学习一下分析微信小程序的流程
0x00 环境设备：pixel 5 Android11.0
抓包：Charles + Postern
发包工具：postman、APIfox
0x01 抓包环境配置好了，那么先来抓个包吧



随便选一个领取...
                        
                    </div>

                    <div class="home-article-meta-info-container">
    <div class="home-article-meta-info">
        <span><i class="fa-solid fa-calendars"></i>&nbsp;
            <span class="home-article-date" data-date="Mon Sep 16 2024 22:14:02 GMT+0800">
                
                    2024-09-16
                
            </span>
        </span>
        
            <span class="home-article-category">
                <i class="fa-solid fa-folders"></i>&nbsp;
            <ul>
                
                
                    
                        
                        <li>
                            <a href="/categories/Android%E9%80%86%E5%90%91/">Android逆向</a>&nbsp;
                        </li>
                    
                    
                
            </ul>
        </span>
        
        
            <span class="home-article-tag">
                <i class="fa-solid fa-tags"></i>&nbsp;
                <ul>
                    
                        <li>
                            
                            <a href="/tags/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E9%80%86%E5%90%91/">微信小程序逆向</a>&nbsp;
                        </li>
                    
                        <li>
                            | 
                            <a href="/tags/%E5%8D%8F%E8%AE%AE%E5%88%86%E6%9E%90/">协议分析</a>&nbsp;
                        </li>
                    
                </ul>
            </span>
        
    </div>

    <a href="/2024/09/16/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F-%E6%9F%90%E6%9F%90%E7%89%9B%E4%BB%94%E5%9F%8E/">阅读全文<span class="seo-reader-text">微信小程序-某某牛仔城</span>&nbsp;<i class="fa-solid fa-angle-right"></i></a>
</div>

                </div>
            </li>
        
            <li class="home-article-item">

                

                

                
                <div class="flex flex-col gap-5 px-7 pb-7 pt-7">
                    <h3 class="home-article-title">
                        <a href="/2024/08/10/%E7%BC%96%E8%AF%91Android13-AOSP/">
                            编译Android13-AOSP
                        </a>
                    </h3>

                    <div class="home-article-content markdown-body">
                        
                            
                            本文主要是下载Android13 AOSP源码，并将其编译后刷入设备
环境：
编译环境：Ubuntu 22.04 TLS，需要配置好科学上网

硬盘最少要300G以上，内存最少要16G以上
源码下载和编译都比较花时间
在12个线程的情况下给20G内存就足够了，太多了也用不到


设备：pixel 5

其他配置1. 安装 Repo 工具Repo 工具用于管理 Git 仓库
mkdir ~/b...
                        
                    </div>

                    <div class="home-article-meta-info-container">
    <div class="home-article-meta-info">
        <span><i class="fa-solid fa-calendars"></i>&nbsp;
            <span class="home-article-date" data-date="Sat Aug 10 2024 09:40:30 GMT+0800">
                
                    2024-08-10
                
            </span>
        </span>
        
            <span class="home-article-category">
                <i class="fa-solid fa-folders"></i>&nbsp;
            <ul>
                
                
                    
                        
                        <li>
                            <a href="/categories/Android%E9%80%86%E5%90%91/">Android逆向</a>&nbsp;
                        </li>
                    
                    
                
            </ul>
        </span>
        
        
            <span class="home-article-tag">
                <i class="fa-solid fa-tags"></i>&nbsp;
                <ul>
                    
                        <li>
                            
                            <a href="/tags/AOSP%E6%BA%90%E7%A0%81%E7%BC%96%E8%AF%91/">AOSP源码编译</a>&nbsp;
                        </li>
                    
                </ul>
            </span>
        
    </div>

    <a href="/2024/08/10/%E7%BC%96%E8%AF%91Android13-AOSP/">阅读全文<span class="seo-reader-text">编译Android13-AOSP</span>&nbsp;<i class="fa-solid fa-angle-right"></i></a>
</div>

                </div>
            </li>
        
            <li class="home-article-item">

                

                

                
                <div class="flex flex-col gap-5 px-7 pb-7 pt-7">
                    <h3 class="home-article-title">
                        <a href="/2024/08/09/%E7%BB%95%E8%BF%87%E7%88%B1%E5%A5%87%E8%89%BAlibmsaoaidsec-so%E7%9A%84Frida%E6%A3%80%E6%B5%8B/">
                            绕过爱奇艺libmsaoaidsec.so的Frida检测
                        </a>
                    </h3>

                    <div class="home-article-content markdown-body">
                        
                            
                            本文中所有内容仅供研究与学习使用，请勿用于任何商业用途和非法用途，否则后果自负！
下面主要分析了如何定位Frida检测位置，以及定位后如何绕过的问题。其原理参见之前写的libcHook
0x00：环境设备：Google Pixel 5
系统版本：Android 13
版本号：TQ2A.230405.003.B2
Frida-Server：16.2.1
爱奇艺：15.7.5
0x01：问题爱奇...
                        
                    </div>

                    <div class="home-article-meta-info-container">
    <div class="home-article-meta-info">
        <span><i class="fa-solid fa-calendars"></i>&nbsp;
            <span class="home-article-date" data-date="Fri Aug 09 2024 11:29:58 GMT+0800">
                
                    2024-08-09
                
            </span>
        </span>
        
            <span class="home-article-category">
                <i class="fa-solid fa-folders"></i>&nbsp;
            <ul>
                
                
                    
                        
                        <li>
                            <a href="/categories/Android%E9%80%86%E5%90%91/">Android逆向</a>&nbsp;
                        </li>
                    
                    
                
            </ul>
        </span>
        
        
            <span class="home-article-tag">
                <i class="fa-solid fa-tags"></i>&nbsp;
                <ul>
                    
                        <li>
                            
                            <a href="/tags/App%E9%80%86%E5%90%91/">App逆向</a>&nbsp;
                        </li>
                    
                        <li>
                            | 
                            <a href="/tags/Frida%E5%8F%8D%E8%B0%83%E8%AF%95/">Frida反调试</a>&nbsp;
                        </li>
                    
                </ul>
            </span>
        
    </div>

    <a href="/2024/08/09/%E7%BB%95%E8%BF%87%E7%88%B1%E5%A5%87%E8%89%BAlibmsaoaidsec-so%E7%9A%84Frida%E6%A3%80%E6%B5%8B/">阅读全文<span class="seo-reader-text">绕过爱奇艺libmsaoaidsec.so的Frida检测</span>&nbsp;<i class="fa-solid fa-angle-right"></i></a>
</div>

                </div>
            </li>
        
            <li class="home-article-item">

                

                

                
                <div class="flex flex-col gap-5 px-7 pb-7 pt-7">
                    <h3 class="home-article-title">
                        <a href="/2024/08/01/%E6%9F%90%E6%98%93%E6%96%B0%E9%97%BB%E9%80%86%E5%90%91/">
                            某易新闻逆向
                        </a>
                    </h3>

                    <div class="home-article-content markdown-body">
                        
                            
                            本文中所有内容仅供研究与学习使用，请勿用于任何商业用途和非法用途，否则后果自负！
环境
App版本：108.1（1807）豌豆荚下载
设备：Pixel XL
抓包工具：Charles + Postern
反汇编工具：jadx-gui 1.5.0、IDA Pro 7.7
hook：frida 12.8.0

抓包

HeaderAdd-To-Queue-Millis	1716155605001...
                        
                    </div>

                    <div class="home-article-meta-info-container">
    <div class="home-article-meta-info">
        <span><i class="fa-solid fa-calendars"></i>&nbsp;
            <span class="home-article-date" data-date="Thu Aug 01 2024 10:55:05 GMT+0800">
                
                    2024-08-01
                
            </span>
        </span>
        
            <span class="home-article-category">
                <i class="fa-solid fa-folders"></i>&nbsp;
            <ul>
                
                
                    
                        
                        <li>
                            <a href="/categories/Android%E9%80%86%E5%90%91/">Android逆向</a>&nbsp;
                        </li>
                    
                    
                
            </ul>
        </span>
        
        
            <span class="home-article-tag">
                <i class="fa-solid fa-tags"></i>&nbsp;
                <ul>
                    
                        <li>
                            
                            <a href="/tags/App%E9%80%86%E5%90%91/">App逆向</a>&nbsp;
                        </li>
                    
                        <li>
                            | 
                            <a href="/tags/%E7%88%AC%E8%99%AB/">爬虫</a>&nbsp;
                        </li>
                    
                </ul>
            </span>
        
    </div>

    <a href="/2024/08/01/%E6%9F%90%E6%98%93%E6%96%B0%E9%97%BB%E9%80%86%E5%90%91/">阅读全文<span class="seo-reader-text">某易新闻逆向</span>&nbsp;<i class="fa-solid fa-angle-right"></i></a>
</div>

                </div>
            </li>
        
            <li class="home-article-item">

                

                

                
                <div class="flex flex-col gap-5 px-7 pb-7 pt-7">
                    <h3 class="home-article-title">
                        <a href="/2024/07/29/%E5%85%AD%E5%B1%82%E9%94%81%E6%9C%BA/">
                            六层锁机
                        </a>
                    </h3>

                    <div class="home-article-content markdown-body">
                        
                            
                            六层锁机和一个注册机制绕过，这个六层锁机之前分析过有些关卡没过，这里重新分析一遍
环境
Android 13.0
frida 16.1.8

登陆

用jadx打开apk



登陆页面的逻辑是把拿到的username放入a中，计算出来的结果需要相同

a是HmacSHA256加密函数

密码是通过a传入username计算出来的。所以可以通过获取a的返回值来拿到

有三种方式可以获取：

...
                        
                    </div>

                    <div class="home-article-meta-info-container">
    <div class="home-article-meta-info">
        <span><i class="fa-solid fa-calendars"></i>&nbsp;
            <span class="home-article-date" data-date="Mon Jul 29 2024 10:41:32 GMT+0800">
                
                    2024-07-29
                
            </span>
        </span>
        
            <span class="home-article-category">
                <i class="fa-solid fa-folders"></i>&nbsp;
            <ul>
                
                
                    
                        
                        <li>
                            <a href="/categories/Android%E9%80%86%E5%90%91/">Android逆向</a>&nbsp;
                        </li>
                    
                    
                
            </ul>
        </span>
        
        
            <span class="home-article-tag">
                <i class="fa-solid fa-tags"></i>&nbsp;
                <ul>
                    
                        <li>
                            
                            <a href="/tags/Frida-Hook/">Frida Hook</a>&nbsp;
                        </li>
                    
                        <li>
                            | 
                            <a href="/tags/CTF/">CTF</a>&nbsp;
                        </li>
                    
                </ul>
            </span>
        
    </div>

    <a href="/2024/07/29/%E5%85%AD%E5%B1%82%E9%94%81%E6%9C%BA/">阅读全文<span class="seo-reader-text">六层锁机</span>&nbsp;<i class="fa-solid fa-angle-right"></i></a>
</div>

                </div>
            </li>
        
            <li class="home-article-item">

                

                

                
                <div class="flex flex-col gap-5 px-7 pb-7 pt-7">
                    <h3 class="home-article-title">
                        <a href="/2024/07/29/%E5%A6%B9%E5%AD%90%E5%9B%BE%E9%98%B2%E6%88%AA%E5%B1%8F%E7%A0%B4%E8%A7%A3/">
                            妹子图防截屏破解
                        </a>
                    </h3>

                    <div class="home-article-content markdown-body">
                        
                            
                            本章主要是一个简单的hook，破解防截屏机制
抓包没啥反抓包措施，直接使用charle抓包就行







FRIDA破解防截屏


妹纸图无法直接截屏

查找一下Android中禁止截屏的实现方式




使用objection搜索一下addFlags或者setFlags





pixel 5的性能还不错能直接搜索到

使用r0tracer搜索一下android.view.Windo...
                        
                    </div>

                    <div class="home-article-meta-info-container">
    <div class="home-article-meta-info">
        <span><i class="fa-solid fa-calendars"></i>&nbsp;
            <span class="home-article-date" data-date="Mon Jul 29 2024 10:18:59 GMT+0800">
                
                    2024-07-29
                
            </span>
        </span>
        
            <span class="home-article-category">
                <i class="fa-solid fa-folders"></i>&nbsp;
            <ul>
                
                
                    
                        
                        <li>
                            <a href="/categories/Android%E9%80%86%E5%90%91/">Android逆向</a>&nbsp;
                        </li>
                    
                    
                
            </ul>
        </span>
        
        
            <span class="home-article-tag">
                <i class="fa-solid fa-tags"></i>&nbsp;
                <ul>
                    
                        <li>
                            
                            <a href="/tags/App%E6%8A%93%E5%8C%85/">App抓包</a>&nbsp;
                        </li>
                    
                        <li>
                            | 
                            <a href="/tags/Frida-Hook/">Frida Hook</a>&nbsp;
                        </li>
                    
                        <li>
                            | 
                            <a href="/tags/%E8%84%B1%E5%A3%B3/">脱壳</a>&nbsp;
                        </li>
                    
                </ul>
            </span>
        
    </div>

    <a href="/2024/07/29/%E5%A6%B9%E5%AD%90%E5%9B%BE%E9%98%B2%E6%88%AA%E5%B1%8F%E7%A0%B4%E8%A7%A3/">阅读全文<span class="seo-reader-text">妹子图防截屏破解</span>&nbsp;<i class="fa-solid fa-angle-right"></i></a>
</div>

                </div>
            </li>
        
            <li class="home-article-item">

                

                

                
                <div class="flex flex-col gap-5 px-7 pb-7 pt-7">
                    <h3 class="home-article-title">
                        <a href="/2024/07/29/%E7%AE%80%E6%98%93%E9%97%AF%E5%85%B3/">
                            简易闯关
                        </a>
                    </h3>

                    <div class="home-article-content markdown-body">
                        
                            
                            打开App



显然是需要输入密码

没有壳直接使用jadx打开分析



按钮点击的逻辑

public class Check {
    public boolean checkPassword(String str) {
        char[] pass = str.toCharArray();
        if (pass.length != 12) {  // 检查密...
                        
                    </div>

                    <div class="home-article-meta-info-container">
    <div class="home-article-meta-info">
        <span><i class="fa-solid fa-calendars"></i>&nbsp;
            <span class="home-article-date" data-date="Mon Jul 29 2024 10:16:33 GMT+0800">
                
                    2024-07-29
                
            </span>
        </span>
        
            <span class="home-article-category">
                <i class="fa-solid fa-folders"></i>&nbsp;
            <ul>
                
                
                    
                        
                        <li>
                            <a href="/categories/Android%E9%80%86%E5%90%91/">Android逆向</a>&nbsp;
                        </li>
                    
                    
                
            </ul>
        </span>
        
        
            <span class="home-article-tag">
                <i class="fa-solid fa-tags"></i>&nbsp;
                <ul>
                    
                        <li>
                            
                            <a href="/tags/Frida-Hook/">Frida Hook</a>&nbsp;
                        </li>
                    
                        <li>
                            | 
                            <a href="/tags/CTF/">CTF</a>&nbsp;
                        </li>
                    
                </ul>
            </span>
        
    </div>

    <a href="/2024/07/29/%E7%AE%80%E6%98%93%E9%97%AF%E5%85%B3/">阅读全文<span class="seo-reader-text">简易闯关</span>&nbsp;<i class="fa-solid fa-angle-right"></i></a>
</div>

                </div>
            </li>
        
            <li class="home-article-item">

                

                

                
                <div class="flex flex-col gap-5 px-7 pb-7 pt-7">
                    <h3 class="home-article-title">
                        <a href="/2024/07/29/%E5%8D%8F%E8%AE%AE%E6%9E%9A%E4%B8%BE%E3%80%81%E7%88%86%E7%A0%B4%E5%8F%8A%E7%AE%97%E6%B3%95%E6%A8%A1%E6%8B%9F/">
                            协议枚举、爆破及算法模拟
                        </a>
                    </h3>

                    <div class="home-article-content markdown-body">
                        
                            
                            很多的加密算法是在so中编写的，并且加了混淆，死磕的话逆向难度是比较大的，在不必要的情况下可以尝试去主动调用算法实现目的：
测试环境：
测试用的demo






这里使用我们前面写的脚本来抓包，因为协议都是TCP所以可以使用我们前面写的抓取javaTCP的代码，再加上libc
上代码
function LogPrint(log) {
    var theDate = new Date(...
                        
                    </div>

                    <div class="home-article-meta-info-container">
    <div class="home-article-meta-info">
        <span><i class="fa-solid fa-calendars"></i>&nbsp;
            <span class="home-article-date" data-date="Mon Jul 29 2024 10:04:08 GMT+0800">
                
                    2024-07-29
                
            </span>
        </span>
        
            <span class="home-article-category">
                <i class="fa-solid fa-folders"></i>&nbsp;
            <ul>
                
                
                    
                        
                        <li>
                            <a href="/categories/Android%E9%80%86%E5%90%91/">Android逆向</a>&nbsp;
                        </li>
                    
                    
                
            </ul>
        </span>
        
        
            <span class="home-article-tag">
                <i class="fa-solid fa-tags"></i>&nbsp;
                <ul>
                    
                        <li>
                            
                            <a href="/tags/Frida-Hook/">Frida Hook</a>&nbsp;
                        </li>
                    
                </ul>
            </span>
        
    </div>

    <a href="/2024/07/29/%E5%8D%8F%E8%AE%AE%E6%9E%9A%E4%B8%BE%E3%80%81%E7%88%86%E7%A0%B4%E5%8F%8A%E7%AE%97%E6%B3%95%E6%A8%A1%E6%8B%9F/">阅读全文<span class="seo-reader-text">协议枚举、爆破及算法模拟</span>&nbsp;<i class="fa-solid fa-angle-right"></i></a>
</div>

                </div>
            </li>
        
            <li class="home-article-item">

                

                

                
                <div class="flex flex-col gap-5 px-7 pb-7 pt-7">
                    <h3 class="home-article-title">
                        <a href="/2024/07/29/%E8%87%AA%E7%BC%96%E8%AF%91openssl%E5%BA%93%E7%9A%84%E6%8A%93%E5%8C%85%E4%B8%8E%E6%BA%AF%E6%BA%90/">
                            自编译openssl库的抓包与溯源
                        </a>
                    </h3>

                    <div class="home-article-content markdown-body">
                        
                            
                            前面几章我们分析了在Java层和JNI层中使用HTTP/HTTPS发送数据和接收时，怎么去进行抓包与溯源
有些App会不使用Android系统提供的SSL库，而使用开源的openssl自己编译一个本地库，用自己的这个库来完成SSL通信。这种情况下我们再对SSL_read/SSL_write进行hook就无法拿到发送和接收的数据了。
甚至APP在有些场景下会直接写汇编使用系统调用号直接与内核交...
                        
                    </div>

                    <div class="home-article-meta-info-container">
    <div class="home-article-meta-info">
        <span><i class="fa-solid fa-calendars"></i>&nbsp;
            <span class="home-article-date" data-date="Mon Jul 29 2024 08:19:13 GMT+0800">
                
                    2024-07-29
                
            </span>
        </span>
        
            <span class="home-article-category">
                <i class="fa-solid fa-folders"></i>&nbsp;
            <ul>
                
                
                    
                        
                        <li>
                            <a href="/categories/Android%E9%80%86%E5%90%91/">Android逆向</a>&nbsp;
                        </li>
                    
                    
                
            </ul>
        </span>
        
        
            <span class="home-article-tag">
                <i class="fa-solid fa-tags"></i>&nbsp;
                <ul>
                    
                        <li>
                            
                            <a href="/tags/App%E6%8A%93%E5%8C%85/">App抓包</a>&nbsp;
                        </li>
                    
                        <li>
                            | 
                            <a href="/tags/Frida-Hook/">Frida Hook</a>&nbsp;
                        </li>
                    
                </ul>
            </span>
        
    </div>

    <a href="/2024/07/29/%E8%87%AA%E7%BC%96%E8%AF%91openssl%E5%BA%93%E7%9A%84%E6%8A%93%E5%8C%85%E4%B8%8E%E6%BA%AF%E6%BA%90/">阅读全文<span class="seo-reader-text">自编译openssl库的抓包与溯源</span>&nbsp;<i class="fa-solid fa-angle-right"></i></a>
</div>

                </div>
            </li>
        
            <li class="home-article-item">

                

                

                
                <div class="flex flex-col gap-5 px-7 pb-7 pt-7">
                    <h3 class="home-article-title">
                        <a href="/2024/07/04/JNI%E5%B1%82SSL%E9%80%9A%E4%BF%A1%E6%8A%93%E5%8C%85%E4%B8%8E%E6%BA%AF%E6%BA%90/">
                            JNI层SSL通信抓包与溯源
                        </a>
                    </h3>

                    <div class="home-article-content markdown-body">
                        
                            
                            在一些场景下对App与服务端交互的数据安全程度要求较高，可能会对通信进行加密传输

使用HTTPS/TLS：使用HTTPS协议，在传输层使用TLS进行加密，确保数据在传输过程中不会被窃取或篡改。
SSL Pinning：通过SSL Pinning确保客户端只信任特定的服务器证书，防止中间人攻击。

在HTTPS/SSL通信的过程当中可以使用Java层的API完成与服务器的通信，也有可能在JN...
                        
                    </div>

                    <div class="home-article-meta-info-container">
    <div class="home-article-meta-info">
        <span><i class="fa-solid fa-calendars"></i>&nbsp;
            <span class="home-article-date" data-date="Thu Jul 04 2024 20:50:51 GMT+0800">
                
                    2024-07-04
                
            </span>
        </span>
        
            <span class="home-article-category">
                <i class="fa-solid fa-folders"></i>&nbsp;
            <ul>
                
                
                    
                        
                        <li>
                            <a href="/categories/Android%E9%80%86%E5%90%91/">Android逆向</a>&nbsp;
                        </li>
                    
                    
                
            </ul>
        </span>
        
        
            <span class="home-article-tag">
                <i class="fa-solid fa-tags"></i>&nbsp;
                <ul>
                    
                        <li>
                            
                            <a href="/tags/App%E6%8A%93%E5%8C%85/">App抓包</a>&nbsp;
                        </li>
                    
                        <li>
                            | 
                            <a href="/tags/Frida-Hook/">Frida Hook</a>&nbsp;
                        </li>
                    
                </ul>
            </span>
        
    </div>

    <a href="/2024/07/04/JNI%E5%B1%82SSL%E9%80%9A%E4%BF%A1%E6%8A%93%E5%8C%85%E4%B8%8E%E6%BA%AF%E6%BA%90/">阅读全文<span class="seo-reader-text">JNI层SSL通信抓包与溯源</span>&nbsp;<i class="fa-solid fa-angle-right"></i></a>
</div>

                </div>
            </li>
        
            <li class="home-article-item">

                

                

                
                <div class="flex flex-col gap-5 px-7 pb-7 pt-7">
                    <h3 class="home-article-title">
                        <a href="/2024/07/04/JNI%E5%B1%82Socket%E6%8A%93%E5%8C%85%E4%B8%8E%E6%BA%AF%E6%BA%90/">
                            JNI层Socket抓包与溯源
                        </a>
                    </h3>

                    <div class="home-article-content markdown-body">
                        
                            <p>之前几章分析了Java层的socket与SSL通信源码，了解了如何通过fridaHook抓取Java层的Socket和SSL通信</p>
<p>接下来两章通过对C层源码分析，了解如何抓取C层的通信</p>
                        
                    </div>

                    <div class="home-article-meta-info-container">
    <div class="home-article-meta-info">
        <span><i class="fa-solid fa-calendars"></i>&nbsp;
            <span class="home-article-date" data-date="Thu Jul 04 2024 20:44:59 GMT+0800">
                
                    2024-07-04
                
            </span>
        </span>
        
            <span class="home-article-category">
                <i class="fa-solid fa-folders"></i>&nbsp;
            <ul>
                
                
                    
                        
                        <li>
                            <a href="/categories/Android%E9%80%86%E5%90%91/">Android逆向</a>&nbsp;
                        </li>
                    
                    
                
            </ul>
        </span>
        
        
            <span class="home-article-tag">
                <i class="fa-solid fa-tags"></i>&nbsp;
                <ul>
                    
                        <li>
                            
                            <a href="/tags/App%E6%8A%93%E5%8C%85/">App抓包</a>&nbsp;
                        </li>
                    
                        <li>
                            | 
                            <a href="/tags/Frida-Hook/">Frida Hook</a>&nbsp;
                        </li>
                    
                </ul>
            </span>
        
    </div>

    <a href="/2024/07/04/JNI%E5%B1%82Socket%E6%8A%93%E5%8C%85%E4%B8%8E%E6%BA%AF%E6%BA%90/">阅读全文<span class="seo-reader-text">JNI层Socket抓包与溯源</span>&nbsp;<i class="fa-solid fa-angle-right"></i></a>
</div>

                </div>
            </li>
        
    </ul>

    <div class="home-paginator px-7 py-5">
        <div class="paginator">
	<span class="page-number current">1</span><a class="page-number" href="/page/2/">2</a><a class="page-number" href="/page/3/">3</a><span class="space">&hellip;</span><a class="page-number" href="/page/10/">10</a><a class="extend next" rel="next" href="/page/2/"><i class="fa-regular fa-angle-right"></i></a>
</div>
  
    </div>
</div>

			</div>

			
		</div>

		<div class="main-content-footer">
			<footer class="footer mt-5 py-5 h-auto text-base text-third-text-color relative border-t-2 border-t-border-color">
    <div class="info-container py-3 text-center">
        
        <div class="text-center">
            &copy;
            
              <span>2022</span>
              -
            
            2025&nbsp;&nbsp;<i class="fa-solid fa-heart fa-beat" style="--fa-animation-duration: 0.5s; color: #f54545"></i>&nbsp;&nbsp;<a href="/">xiaoeryu</a>
            
                
                <p class="post-count space-x-0.5">
                    <span>
                        共撰写了 112 篇文章
                    </span>
                    
                </p>
            
        </div>
        
            <script data-swup-reload-script src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
            <div class="relative text-center lg:absolute lg:right-[20px] lg:top-1/2 lg:-translate-y-1/2 lg:text-right">
                
                    <span id="busuanzi_container_site_uv" class="lg:!block">
                        <span class="text-sm">访问人数</span>
                        <span id="busuanzi_value_site_uv"></span>
                    </span>
                
                
                    <span id="busuanzi_container_site_pv" class="lg:!block">
                        <span class="text-sm">总访问量</span>
                        <span id="busuanzi_value_site_pv"></span>
                    </span>
                
            </div>
        
        <div class="relative text-center lg:absolute lg:left-[20px] lg:top-1/2 lg:-translate-y-1/2 lg:text-left">
            <span class="lg:block text-sm">由 <?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="relative top-[2px] inline-block align-baseline" version="1.1" id="圖層_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1rem" height="1rem" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve"><path fill="#0E83CD" d="M256.4,25.8l-200,115.5L56,371.5l199.6,114.7l200-115.5l0.4-230.2L256.4,25.8z M349,354.6l-18.4,10.7l-18.6-11V275H200v79.6l-18.4,10.7l-18.6-11v-197l18.5-10.6l18.5,10.8V237h112v-79.6l18.5-10.6l18.5,10.8V354.6z"/></svg><a target="_blank" class="text-base" href="https://hexo.io">Hexo</a> 驱动</span>
            <span class="text-sm lg:block">主题&nbsp;<a class="text-base" target="_blank" href="https://github.com/EvanNotFound/hexo-theme-redefine">Redefine v2.8.2</a></span>
        </div>
        
        
            <div>
                博客已运行 <span class="odometer" id="runtime_days" ></span> 天 <span class="odometer" id="runtime_hours"></span> 小时 <span class="odometer" id="runtime_minutes"></span> 分钟 <span class="odometer" id="runtime_seconds"></span> 秒
            </div>
        
        
            <script data-swup-reload-script>
                try {
                    function odometer_init() {
                    const elements = document.querySelectorAll('.odometer');
                    elements.forEach(el => {
                        new Odometer({
                            el,
                            format: '( ddd).dd',
                            duration: 200
                        });
                    });
                    }
                    odometer_init();
                } catch (error) {}
            </script>
        
        
        
    </div>  
</footer>
		</div>
	</div>

	

	<div class="right-side-tools-container">
		<div class="side-tools-container">
	<ul class="hidden-tools-list">
		<li class="right-bottom-tools tool-font-adjust-plus flex justify-center items-center">
			<i class="fa-regular fa-magnifying-glass-plus"></i>
		</li>

		<li class="right-bottom-tools tool-font-adjust-minus flex justify-center items-center">
			<i class="fa-regular fa-magnifying-glass-minus"></i>
		</li>

		<li class="right-bottom-tools tool-dark-light-toggle flex justify-center items-center">
			<i class="fa-regular fa-moon"></i>
		</li>

		<!-- rss -->
		

		

		<li class="right-bottom-tools tool-scroll-to-bottom flex justify-center items-center">
			<i class="fa-regular fa-arrow-down"></i>
		</li>
	</ul>

	<ul class="visible-tools-list">
		<li class="right-bottom-tools toggle-tools-list flex justify-center items-center">
			<i class="fa-regular fa-cog fa-spin"></i>
		</li>
		
		<li class="right-bottom-tools tool-scroll-to-top flex justify-center items-center">
			<i class="arrow-up fas fa-arrow-up"></i>
			<span class="percent"></span>
		</li>
		
		
	</ul>
</div>
	</div>

	<div class="image-viewer-container">
	<img src="">
</div>

	
	<div class="search-pop-overlay">
	<div class="popup search-popup">
		<div class="search-header">
			<span class="search-input-field-pre">
				<i class="fa-solid fa-keyboard"></i>
			</span>
			<div class="search-input-container">
				<input autocomplete="off" autocorrect="off" autocapitalize="off" placeholder="站内搜索您需要的内容..." spellcheck="false" type="search" class="search-input">
			</div>
			<span class="popup-btn-close">
				<i class="fa-solid fa-times"></i>
			</span>
		</div>
		<div id="search-result">
			<div id="no-result">
				<i class="fa-solid fa-spinner fa-spin-pulse fa-5x fa-fw"></i>
			</div>
		</div>
	</div>
</div>
	

</main>



<script src="/js/build/libs/Swup.min.js"></script>

<script src="/js/build/libs/SwupSlideTheme.min.js"></script>

<script src="/js/build/libs/SwupScriptsPlugin.min.js"></script>

<script src="/js/build/libs/SwupProgressPlugin.min.js"></script>

<script src="/js/build/libs/SwupScrollPlugin.min.js"></script>

<script src="/js/build/libs/SwupPreloadPlugin.min.js"></script>

<script>
    const swup = new Swup({
        plugins: [
            new SwupScriptsPlugin({
                optin: true,
            }),
            new SwupProgressPlugin(),
            new SwupScrollPlugin({
                offset: 80,
            }),
            new SwupSlideTheme({
                mainElement: ".main-content-body",
            }),
            new SwupPreloadPlugin(),
        ],
        containers: ["#swup"],
    });
</script>




	
<script src="/js/build/tools/imageViewer.js" type="module"></script>

<script src="/js/build/utils.js" type="module"></script>

<script src="/js/build/main.js" type="module"></script>

<script src="/js/build/layouts/navbarShrink.js" type="module"></script>

<script src="/js/build/tools/scrollTopBottom.js" type="module"></script>

<script src="/js/build/tools/lightDarkSwitch.js" type="module"></script>

<script src="/js/build/layouts/categoryList.js" type="module"></script>



    
<script src="/js/build/tools/localSearch.js" type="module"></script>




    
<script src="/js/build/tools/codeBlock.js" type="module"></script>




    
<script src="/js/build/layouts/lazyload.js" type="module"></script>




    
<script src="/js/build/tools/runtime.js"></script>

    
<script src="/js/build/libs/odometer.min.js"></script>

    
<link rel="stylesheet" href="/assets/odometer-theme-minimal.css">




  
<script src="/js/build/libs/Typed.min.js"></script>

  
<script src="/js/build/plugins/typed.js" type="module"></script>








    
<script src="/js/build/libs/anime.min.js"></script>





    
<script src="/js/build/tools/tocToggle.js" type="module" data-swup-reload-script=""></script>

<script src="/js/build/layouts/toc.js" type="module" data-swup-reload-script=""></script>

<script src="/js/build/plugins/tabs.js" type="module" data-swup-reload-script=""></script>




<script src="/js/build/libs/moment-with-locales.min.js" data-swup-reload-script=""></script>


<script src="/js/build/layouts/essays.js" type="module" data-swup-reload-script=""></script>





	
</body>

</html>